// createAction的作用：生成action创建函数，自动处理action type和payload。
// createReducer的作用：简化reducer的编写，使用Builder API或对象写法，同时利用Immer进行不可变更新。
// 小型项目可优先使用 createSlice 进一步简化代码
// 简单状态管理可考虑 useContext + useReducer


import { createSlice } from "@reduxjs/toolkit";
// 创建一个 slice
const counterSlice = createSlice({
  name: "counter",  // 模块名称（用于生成 action type 前缀）
  initialState: {
    // 初始化状态
    count: 0, // 需要被全局维护的数据
  },
  // 定义修改状态的方法： 自动生成 action type: 'counter/increment'
  reducers: {
    increment(state) {
      state.count += 1; // 增加计数
    },
    decrement(state) {
      state.count -= 1; // 减少计数
    },
    reset(state) {
      state.count = 0; // 重置计数
    },
  },
});

// 导出自动生成的 action creators（动作创建函数）
export const { increment, decrement, reset } = counterSlice.actions;

// 导出 reducer 函数供 store 使用
export const counterReducer = counterSlice.reducer;


// TODO: createReducer 方案 —— 需手动管理 Action
// import { createAction, createReducer } from "@reduxjs/toolkit";

// 手动创建 action
// export const increment = createAction("counter/increment");
// export const decrement = createAction("counter/decrement");
// export const reset = createAction("counter/reset");

// const initialState = { count: 0 };

// 显式绑定 action 到 reducer
// const counterReducer = createReducer(initialState, (builder) => {
//   builder
//     .addCase(increment, (state) => { state.count += 1 })
//     .addCase(decrement, (state) => { state.count -= 1 })
//     .addCase(reset, (state) => { state.count = 0 });
// });
// export default counterReducer;